﻿Imports System.Drawing
Imports PowerSong.SongDatabase.Legacy.Style

''' <summary>
''' Represents style details applied to a projectlet.
''' </summary>
Public Class ProjectletStyle

    ''' <summary>
    ''' The name of the tag, representing the current date.
    ''' </summary>
    Public Const DATE_TAG As String = "{Date}"

    ''' <summary>
    ''' The name of the tag representing the current time.
    ''' </summary>
    Public Const TIME_TAG As String = "{Time}"

    ''' <summary>
    ''' The name of the tag representing the title of the item being projected.
    ''' </summary>
    Public Const TITLE_TAG As String = "{Title}"

    ''' <summary>
    ''' The name of the tag representing the verse of the item being projected.
    ''' </summary>
    Public Const VERSE_TAG As String = "{Verse}"

    ''' <summary>
    ''' The name of the tag representing the list of authors of the item being projected.
    ''' </summary>
    Public Const AUTHORS_TAG As String = "{Authors}"

    ''' <summary>
    ''' The name of the tag representing simple copyright details.
    ''' </summary>
    Public Const SIMPLE_COPYRIGHT_TAG As String = "{SimpleCopyright}"

    Private FCategory As String = "Verse"

    ''' <summary>
    ''' Gets the name of the category.
    ''' </summary>
    ''' <value>The category name.</value>
    Public ReadOnly Property Category() As String
        Get
            Return FCategory
        End Get
    End Property

    ''' <summary>
    ''' Gets or sets the name of the font.
    ''' </summary>
    ''' <value>The name of the font.</value>
    Public Property FontName() As String = "Verdana"

    ''' <summary>
    ''' Gets or sets the font style.
    ''' </summary>
    ''' <value>The font style.</value>
    Public Property FontStyle() As FontStyle = FontStyle.Regular
    
    ''' <summary>
    ''' Gets or sets the size of the font.
    ''' </summary>
    ''' <value>The size of the font.</value>
    Public Property FontSize() As Integer = 48

    ''' <summary>
    ''' Gets or sets the font colour.
    ''' </summary>
    ''' <value>The font colour.</value>
    Public Property FontColour() As Color = color.White

    ''' <summary>
    ''' Gets or sets the font effect.
    ''' </summary>
    ''' <value>The font effect.</value>
    Public Property FontEffect() As ETextEffect = ETextEffect.Shadow

    ''' <summary>
    ''' Gets or sets the colour of the font effect.
    ''' </summary>
    ''' <value>The colour of the font effect.</value>
    Public Property FontEffectColour() As Color = Color.Black

    ''' <summary>
    ''' Gets or sets the text alignment.
    ''' </summary>
    ''' <value>The text alignment.</value>
    Public Property Alignment() As ETextAlignment = ETextAlignment.TopMiddle

    ''' <summary>
    ''' Gets or sets the area covered by the projectlet.
    ''' </summary>
    ''' <value>The area of the projectlet. Each value should be between 0 and 1.</value>
    Public Property Area() As RectangleF =  New RectangleF(0.05, 0.05, 0.9, 0.9)

    ''' <summary>
    ''' Gets or sets the display option.
    ''' </summary>
    ''' <value>The display option.</value>
    Public Property DisplayOption() As EDisplayOption = EDisplayOption.Always

    ''' <summary>
    ''' Gets or sets the content details of this projectlet.
    ''' </summary>
    ''' <value>The content details. Variables covered in curly braces are replaced with actual text. Valid values include {Date}, {Time}, {Title}, {Verse}, {Authors}, {SimpleCopyright}.</value>
    Public Property Content() As String = String.Empty

    Friend Sub New(ByVal category As String)
        FCategory = category
    End Sub

End Class
